home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / redakcyjne / programy / MediaMonkey 3.1.0.1256 / MediaMonkey_3.1.0.1256.exe / {app} / Scripts / Export.vbs < prev    next >
Text File  |  2009-03-04  |  17KB  |  590 lines

  1. ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  2. ' This file can be replaced  in one of the future versions,
  3. ' so please if you want to modify it, make  a copy, do your
  4. ' modifications  in that copy and  change Scripts.ini  file 
  5. ' appropriately. 
  6. ' If you do not do this, you will lose  all your changes in
  7. ' this script when you install a new version of MediaMonkey
  8. ' !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  9.  
  10. Option Explicit     ' report undefined variables, ...
  11.  
  12. ' function for quoting strings
  13. Function QStr( astr)
  14.   QStr = chr(34) & astr & chr(34)
  15. End Function
  16.  
  17. ' function for quoting strings converted to plain ASCII
  18. Function QAStr( astr)
  19.   QAStr = chr(34) & SDB.toASCII(astr) & chr(34)
  20. End Function
  21.  
  22. Dim list      ' list of songs to be exported
  23. Dim res       ' results of dialogs calls
  24. Dim fullfile  ' fully specified output file name
  25. Dim fso       ' FileSystemObject
  26.  
  27. ' SDB variable is connected to MediaMonkey application object
  28.  
  29. Sub InitExport( ext, filter, iniDirValue)
  30.   fullfile = ""
  31.  
  32.   ' Get a list of songs to be exported
  33.   Set list = SDB.CurrentSongList
  34.  
  35.   If list.count=0 Then
  36.     res = SDB.MessageBox( SDB.Localize("Select tracks to be exported, please."), mtError, Array(mbOk))
  37.     Exit Sub
  38.   End If
  39.  
  40.   ' Open inifile and get last used directory
  41.   Dim iniF
  42.   Set iniF = SDB.IniFile
  43.  
  44.   ' Create common dialog and ask where to save the file
  45.   Dim dlg
  46.   Set dlg = SDB.CommonDialog
  47.   dlg.DefaultExt=ext
  48.   dlg.Filter=filter
  49.   dlg.Flags=cdlOFNOverwritePrompt + cdlOFNHideReadOnly + cdlOFNNoChangeDir
  50.   dlg.InitDir = iniF.StringValue( "Scripts", iniDirValue)
  51.   dlg.ShowSave
  52.  
  53.   if Not dlg.Ok Then
  54.     Exit Sub   ' if cancel was pressed, exit
  55.   End If
  56.  
  57.   ' Get the selected filename
  58.   fullfile = dlg.FileName
  59.  
  60.   ' Connect to the FileSystemObject
  61.   Set fso = SDB.Tools.FileSystem
  62.  
  63.   ' Write selected directory to the ini file
  64.   iniF.StringValue( "Scripts", iniDirValue) = fullfile
  65. End Sub
  66.  
  67. Function FormatStrTime (StrTimeValue)
  68.   FormatStrTime = ""
  69.  
  70.   If Len (StrTimeValue) > 0 Then
  71.     Dim BeginPosition, Position, TimePart, TimePartsCount
  72.     BeginPosition = 1
  73.     Position = InStr (BeginPosition, StrTimeValue, ":", vbTextCompare)
  74.     TimePartsCount = 0
  75.  
  76.     Do While Position > 0
  77.       TimePartsCount = TimePartsCount + 1
  78.       BeginPosition = Position + 1
  79.       Position = InStr (BeginPosition, StrTimeValue, ":", vbTextCompare)
  80.     Loop
  81.  
  82.     For TimePart = 1 to 2 - TimePartsCount
  83.       FormatStrTime = FormatStrTime + "00:"
  84.     Next
  85.   Else
  86.     StrTimeValue = "00:00:00"
  87.   End If
  88.  
  89.   FormatStrTime = FormatStrTime + StrTimeValue
  90.   FormatStrTime = Replace (FormatStrTime, " ", "", 1, -1, vbTextCompare)
  91. End Function
  92.  
  93. Sub FinishExport( ok)
  94.   On Error Resume Next
  95.  
  96.   ' remove the output file if terminated
  97.   if not Ok then
  98.     fso.DeleteFile( fullfile)
  99.   end if
  100. End Sub
  101.  
  102. Sub ExportCSV
  103.   ' initialize export
  104.   Call InitExport (".csv", "CSV (*.csv)|*.csv|All files (*.*)|*.*", _
  105.       "LastExportCSVDir")
  106.   if fullfile="" then
  107.     Exit Sub
  108.   end if
  109.  
  110.   ' Create the output file
  111.   Dim fout
  112.   Set fout = fso.CreateTextFile( fullfile, True)
  113.  
  114.   ' Write header line
  115.   fout.WriteLine Join(Array(SDB.Localize("Artist"),SDB.Localize("Title"), _
  116.     SDB.Localize("Album"),SDB.Localize("Length"),SDB.Localize("Year"), _
  117.     SDB.Localize("Genre"),SDB.Localize("Rating"),SDB.Localize("Bitrate"), _
  118.     SDB.Localize("Path"),SDB.Localize("Media")),",")
  119.  
  120.   ' Use progress to notify user about the current action
  121.   Dim Progress
  122.   Set Progress = SDB.Progress
  123.   Progress.Text = SDB.Localize("Exporting...")
  124.  
  125.   ' Iterate through the list and export all songs
  126.   Progress.MaxValue = list.count
  127.   Dim i, itm
  128.   for i=0 to list.count-1
  129.     Set itm = list.Item(i)
  130.     Dim bitrate
  131.     bitrate = itm.bitrate
  132.     if bitrate>0 then
  133.       bitrate = CStr(Round( bitrate/1000))
  134.     else
  135.       bitrate = ""
  136.     end if
  137.     fout.WriteLine Join( Array( QAStr(itm.ArtistName), QAStr(itm.title), QAStr(itm.AlbumName), _
  138.       QAStr(itm.SongLengthString), CStr(itm.Year), QAStr(itm.Genre), CStr(itm.Rating), CStr(bitrate), _
  139.       QAStr(itm.Path), QAStr(itm.MediaLabel)), ",")
  140.     Progress.Value = i+1
  141.     if Progress.Terminate then
  142.       Exit For
  143.     end if
  144.   next
  145.  
  146.   ' Close the output file and finish
  147.   fout.Close
  148.  
  149.   ' Was it successfull?
  150.   Dim ok
  151.   if Progress.Terminate then
  152.     ok = False
  153.   else
  154.     ok = True
  155.   end if
  156.  
  157.   ' hide progress
  158.   Set Progress = Nothing
  159.  
  160.   Call FinishExport( ok)
  161. End Sub
  162.  
  163.  ' escape XML string
  164. Function MapXML( srcstring)
  165.   srcstring = Replace( srcstring, "&", "&")
  166.   srcstring = Replace( srcstring, "<", "<")
  167.   srcstring = Replace( srcstring, ">", ">")
  168.   Dim i
  169.   i=1
  170.   While i<=Len(srcstring)
  171.     If (AscW(Mid(srcstring, i, 1))>127) Then
  172.       srcstring = Mid( srcstring, 1, i-1)+"&#"+CStr( AscW( Mid( srcstring, i, 1)))+";"+Mid( srcstring, i+1, Len(srcstring))
  173.     End If
  174.     i=i+1
  175.   WEnd
  176.   MapXML = srcstring
  177. End Function
  178.  
  179. Sub ExportHTML 
  180.   ' initialize export 
  181.   Call InitExport( ".htm", "HTML (*.htm)|*.htm|All files (*.*)|*.*", _ 
  182.   "LastExportHTMLDir") 
  183.   if fullfile="" then 
  184.   Exit Sub 
  185.   end if 
  186.  
  187.   ' Create the output file 
  188.   Dim fout 
  189.   Set fout = fso.CreateTextFile( fullfile, True) 
  190.  
  191.   ' Write header line 
  192.   fout.WriteLine "<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"">"
  193.   fout.WriteLine "<html xmlns=""http://www.w3.org/1999/xhtml"">" 
  194.   fout.WriteLine "<head><title>" & SDB.Localize("MediaMonkey Track List") & "</title>" 
  195.  
  196.   ' Code to format the document 
  197.   fout.WriteLine "<style type=""text/css"">" 
  198.   fout.WriteLine "body{font-family:Verdana,Arial,Tahoma,sans-serif;background-color:#fff;font-size:small;color:#000;}" 
  199.   fout.WriteLine "th{font-weight:bold;border-bottom:3px solid #000;}" 
  200.   fout.WriteLine "td{color:#000;border-bottom:1px solid #000;padding:4px 6px;}"
  201.   fout.WriteLine "tr.trhov:hover, tr.trhov:hover td{background-color:#ddd;}"
  202.   fout.Writeline ".dark{background-color:#eee;}" 
  203.   fout.WriteLine "</style>" 
  204.  
  205.   fout.WriteLine "</head><body>" 
  206.   fout.WriteLine "<a href=""http://www.mediamonkey.com"" style=""font-size:1.4em;font-weight:bold;"">" & SDB.Localize("MediaMonkey Track List")&"</a>" 
  207.  
  208.   ' Headers of table 
  209.   fout.WriteLine "<br /><br /><table cellpadding=""4"" cellspacing=""0"">" 
  210.   fout.WriteLine "<tr align=""left"">" 
  211.   fout.WriteLine " <th class=""dark"">#</th>" 
  212.   fout.WriteLine " <th>" & SDB.Localize("Artist") & "</th>" 
  213.   fout.WriteLine " <th class=""dark"">" & SDB.Localize("Title") & "</th>" 
  214.   fout.WriteLine " <th>" & SDB.Localize("Length") & "</th>" 
  215.   fout.WriteLine " <th class=""dark"">" & SDB.Localize("Album") & "</th>" 
  216.   fout.WriteLine " <th>" & SDB.Localize("Track #") & "</th>" 
  217.   fout.WriteLine " <th class=""dark"">" & SDB.Localize("Year") & "</th>" 
  218.   fout.WriteLine " <th>" & SDB.Localize("Genre") & "</th>" 
  219.   fout.WriteLine " <th class=""dark"">" & SDB.Localize("Rating") & "</th>" 
  220.   fout.WriteLine " <th>" & SDB.Localize("Bitrate") & "</th>" 
  221.   fout.WriteLine " <th class=""dark"">" & SDB.Localize("Media") & "</th>" 
  222.   fout.WriteLine "</tr>" 
  223.  
  224.   ' Use progress to notify user about the current action 
  225.   Dim Progress 
  226.   Set Progress = SDB.Progress 
  227.   Progress.Text = SDB.Localize("Exporting...")
  228.  
  229.   ' Iterate through the list and export all songs 
  230.   Progress.MaxValue = list.count 
  231.   Dim i, itm, Duration
  232.   for i=0 to list.count-1 
  233.     Set itm = list.Item(i) 
  234.     Dim bitrate 
  235.     bitrate = itm.bitrate 
  236.     if bitrate>0 then 
  237.       bitrate = CStr(Round( bitrate/1000)) 
  238.     else 
  239.       bitrate = " " 
  240.     end if 
  241.     Dim year 
  242.     year = itm.year 
  243.     if year<=0 then 
  244.       year = " " 
  245.     else 
  246.       year = CStr( year) 
  247.     end if 
  248.  
  249.     ' Add space to empty fields, so table is displayed correctly (Cell borders do not show up for empty cells) 
  250.     Dim artistname 
  251.     artistname = MapXML(itm.ArtistName)
  252.     if artistname="" then 
  253.       artistname = " " 
  254.     end if 
  255.  
  256.     Dim songtitle 
  257.     songtitle = MapXML(itm.title)
  258.     if songtitle="" then 
  259.       songtitle = " " 
  260.     end if 
  261.  
  262.     Dim albumname 
  263.     albumname = MapXML(itm.AlbumName)
  264.     if albumname="" then 
  265.       albumname = " " 
  266.     end if 
  267.  
  268.     Dim songlength
  269.     songlength = itm.SongLengthString
  270.  
  271.     if songlength="" then 
  272.       songlength = " " 
  273.     else
  274.       Duration = Duration + TimeValue (FormatStrTime (songlength))
  275.     end if
  276.  
  277.     Dim songgenre 
  278.     songgenre = MapXML(itm.Genre)
  279.     if songgenre="" then 
  280.       songgenre = " " 
  281.     end if 
  282.  
  283.     Dim trackorder 
  284.     trackorder = itm.TrackOrder 
  285.     if trackorder="" then 
  286.       trackorder = " " 
  287.     elseif trackorder = "0" then 
  288.       trackorder = " " 
  289.     end if 
  290.  
  291.     ' These are added to get some decent display, all the others haven't, this script is just to demonstrate all the available options 
  292.  
  293.     Dim rating 
  294.     Dim ratingCal
  295.     rating = itm.Rating 
  296.     
  297.     Select Case rating
  298.   Case ""
  299.     ratingCal = " "
  300.   Case -1
  301.     ratingCal = " "
  302.   Case 100
  303.     ratingCal = 5
  304.   Case 90
  305.     ratingCal = 4.5
  306.   Case 80
  307.     ratingCal = 4
  308.   Case 70
  309.     ratingCal = 3.5
  310.   Case 60
  311.     ratingCal = 3
  312.   Case 50
  313.     ratingCal = 2.5
  314.   Case 40
  315.     ratingCal = 2
  316.   Case 30
  317.     ratingCal = 1.5
  318.   Case 20
  319.     ratingCal = 1
  320.   Case 10
  321.     ratingCal = 0.5
  322.   Case 0
  323.     ratingCal = 0
  324.   Case Else
  325.     ratingCal = " "
  326.     End Select
  327.   
  328.     Dim medialabel
  329.     medialabel = MapXML(itm.MediaLabel)
  330.     if medialabel="" then 
  331.       medialabel = " " 
  332.     end if
  333.  
  334.     ' Body of the table 
  335.     fout.WriteLine "<tr class=""trhov""><td align=""right"" class=""dark"">"&i+1&"</td><td>"&artistname&"</td><td class=""dark"">"&songtitle _ 
  336.     &"</td><td align=""right"">"&songlength&"</td><td class=""dark"">"&albumname _ 
  337.     &"</td><td align=""right"">"&trackorder&"</td><td align=""right"" class=""dark"">"&Year _ 
  338.     &"</td><td>"&songgenre&"</td><td class=""dark"">"&ratingCal&"</td><td align=""right"">"&bitrate _ 
  339.     &"</td><td align=""right"" class=""dark"">"&medialabel&"</td></tr>" 
  340.     Progress.Value = i+1 
  341.     if Progress.Terminate then 
  342.       Exit For 
  343.     end if 
  344.   next 
  345.  
  346.   ' Write some code to finish html document 
  347.   fout.WriteLine "</table><table width=""100%""><tr>"
  348.   fout.WriteLine "<td style=""border:none;""><b>"&SDB.Localize("Total Tracks:")&" </b>"&i&"</td>"
  349.   fout.WriteLine "</tr><tr>"
  350.   fout.WriteLine "<td style=""border:none;""><b>"&SDB.Localize("Duration:")&" </b>"&Hour (Duration)& "h " &Minute (Duration)& "m " &Second (Duration)& "s</td>"
  351.   fout.WriteLine "<td align=""right"" style=""border:none;"">Generated by <a href=""http://www.mediamonkey.com"">MediaMonkey</a></td>"
  352.   fout.WriteLine "</tr></table></body></html>"
  353.  
  354.   ' Close the output file and finish 
  355.   fout.Close 
  356.  
  357.   ' Was it successfull? 
  358.   Dim ok 
  359.   if Progress.Terminate then 
  360.     ok = False 
  361.   else 
  362.     ok = True 
  363.   end if 
  364.  
  365.   ' hide progress 
  366.   Set Progress = Nothing 
  367.  
  368.   FinishExport( ok) 
  369. End Sub 
  370.  
  371. Sub ExportXLS
  372.   ' initialize export
  373.   Call InitExport( ".xls", "Excel sheet (*.xls)|*.xls|All files (*.*)|*.*", _
  374.         "LastExportExcelDir")
  375.   if fullfile="" then
  376.     Exit Sub
  377.   end if
  378.  
  379.   if fso.FileExists( fullfile) then
  380.     fso.DeleteFile( fullfile)
  381.   end if
  382.  
  383.   On Error Resume Next
  384.  
  385.   ' Connect to Excel
  386.   Dim Excel, WB, WS
  387.   Set Excel = CreateObject("Excel.application")
  388.  
  389.   If Err.Number<>0 then
  390.     MsgBox "Microsoft Excel could not be found, please install it and try again."
  391.     Err.Clear
  392.     Exit Sub
  393.   End If
  394.   On Error GoTo 0
  395.  
  396.   ' Create a new workbook and get its worksheet
  397.   Set WB = Excel.WorkBooks.Add
  398.   Set WS = WB.Sheets(1)
  399.  
  400.   ' Use progress to notify user about the current action
  401.   Dim Progress
  402.   Set Progress = SDB.Progress
  403.   Progress.Text = SDB.Localize("Exporting...")
  404.  
  405.   ' Create a header
  406.   WS.Cells(1,1).Value = SDB.Localize("Artist")
  407.   WS.Cells(1,2).Value = SDB.Localize("Album")
  408.   WS.Cells(1,3).Value = SDB.Localize("Title")
  409.   WS.Cells(1,4).Value = SDB.Localize("Length")
  410.   WS.Cells(1,5).Value = SDB.Localize("Year")
  411.   WS.Cells(1,6).Value = SDB.Localize("Genre")
  412.   WS.Cells(1,7).Value = SDB.Localize("Bitrate")
  413.   WS.Cells(1,8).Value = SDB.Localize("Media")
  414.  
  415.   WS.Rows("1:1").Font.Bold = True
  416.  
  417.   Dim ms2Day
  418.   ms2Day = 24*60*60*1000
  419.  
  420.   ' Iterate through the list and export all songs
  421.   Progress.MaxValue = list.count
  422.   Dim i, itm
  423.   for i=0 to list.count-1
  424.     Set itm = list.Item(i)
  425.     Dim bitrate
  426.     bitrate = itm.bitrate
  427.     if bitrate>0 then
  428.       bitrate = CStr(Round( bitrate/1000))
  429.     else
  430.       bitrate = ""
  431.     end if
  432.     Dim year
  433.     year = itm.year
  434.     if year<=0 then
  435.       year = ""
  436.     else
  437.       year = CStr( year)
  438.     end if
  439.  
  440.     WS.Cells(i+2,1).Value = itm.ArtistName
  441.     WS.Cells(i+2,2).Value = itm.AlbumName
  442.     WS.Cells(i+2,3).Value = itm.title
  443.     WS.Cells(i+2,4).NumberFormat = "mm:ss"
  444.     If itm.SongLength>=0 Then
  445.       WS.Cells(i+2,4).Value = itm.SongLength / ms2Day
  446.     End If
  447.     WS.Cells(i+2,5).Value = year
  448.     WS.Cells(i+2,6).Value = itm.Genre
  449.     WS.Cells(i+2,7).Value = bitrate
  450.     WS.Cells(i+2,8).Value = itm.MediaLabel
  451.  
  452.     Progress.Value = i+1
  453.     if Progress.Terminate then
  454.       Exit For
  455.     end if
  456.   next
  457.  
  458.   ' Was it successfull?
  459.   Dim ok
  460.   if Progress.Terminate then
  461.     ok = False
  462.   else
  463.     ok = True
  464.     WB.SaveAs fullfile
  465.   end if
  466.  
  467.   WB.Close false
  468.  
  469.   ' hide progress
  470.   Set Progress = Nothing
  471.  
  472.   FinishExport( ok)
  473. End Sub
  474.  
  475. Sub ExportXML
  476.   ' initialize export
  477.   Call InitExport (".xml", "XML (*.xml)|*.xml|All files (*.*)|*.*", _
  478.       "LastExportXMLDir")
  479.   if fullfile="" then
  480.     Exit Sub
  481.   end if
  482.  
  483.   ' Create the output file
  484.   Dim fout
  485.   Set fout = fso.CreateTextFile( fullfile, True)
  486.  
  487.   ' Use progress to notify user about the current action
  488.   Dim Progress
  489.   Set Progress = SDB.Progress
  490.   Dim ProgressString
  491.   ProgressString = SDB.Localize("Exporting...")
  492.  
  493.   Dim i
  494.   Dim Artists, Artist
  495.   Set Artists = list.Artists
  496.   Dim Albums, Album
  497.   Set Albums = list.Albums
  498.  
  499.   fout.WriteLine "<?xml version='1.0'?>"
  500.   fout.WriteLine "<MusicDatabase>"
  501.  
  502.   Progress.MaxValue = list.count + Artists.Count + Albums.Count
  503.  
  504.   Progress.Text = ProgressString & " (artists)"
  505.   fout.WriteLine "  <Artists>"
  506.   for i=0 to Artists.count-1
  507.     Set Artist = Artists.Item(i)
  508.     fout.WriteLine "    <Artist id=""Artist_"&Artist.id&""">"
  509.     fout.WriteLine "       <Name>" & MapXML(Artist.Name) & "</Name>"
  510.     fout.WriteLine "    </Artist>"
  511.     Progress.Increase
  512.     if Progress.Terminate then
  513.       Exit For
  514.     end if
  515.   next
  516.   fout.WriteLine "  </Artists>"
  517.  
  518.   Progress.Text = ProgressString & " (albums)"
  519.   fout.WriteLine "  <Albums>"
  520.   for i=0 to Albums.count-1
  521.     Set Album = Albums.Item(i)
  522.     fout.WriteLine "    <Album id=""Album_"&Album.id&""">"
  523.     fout.WriteLine "       <PerformingArtist id="""& Album.Artist.id & """>" & MapXML(Album.Artist.Name) & "</PerformingArtist>"
  524.     fout.WriteLine "       <Name>" & MapXML(Album.Name) & "</Name>"
  525.     fout.WriteLine "    </Album>"
  526.     Progress.Increase
  527.     if Progress.Terminate then
  528.       Exit For
  529.     end if
  530.   next
  531.   fout.WriteLine "  </Albums>"
  532.  
  533.   ' Iterate through the list and export all songs
  534.   Progress.Text = ProgressString & " (songs)"
  535.   fout.WriteLine "  <Songs>"
  536.   Progress.MaxValue = list.count
  537.   Dim Song, Media
  538.   for i=0 to list.count-1
  539.     Set Song = list.Item(i)
  540.     fout.WriteLine "    <Song id=""Song_"&Song.id&""">"
  541.     fout.WriteLine "       <Title>" & MapXML(Song.Title) & "</Title>"
  542.     fout.WriteLine "       <PerformingArtist id=""Artist_"& Song.Artist.id & """>" & MapXML(Song.ArtistName) & "</PerformingArtist>"
  543.     fout.WriteLine "       <ContainedInAlbum id=""Album_"& Song.Album.id & """>" & MapXML(Song.AlbumName) & "</ContainedInAlbum>"
  544.     fout.WriteLine "       <SongLength ms="""& Song.SongLength &""">" & MapXML(Song.SongLengthString) & "</SongLength>"
  545.     if Song.Year>0 then
  546.       fout.WriteLine "       <Year value="""& MapXML(Song.Year) &"""/>"
  547.     end if
  548.     if Song.Genre<>"" then
  549.       fout.WriteLine "       <Genre>"& MapXML(Song.Genre) &"</Genre>"
  550.     end if
  551.     fout.WriteLine "       <Bitrate>"& MapXML(Song.Bitrate) &"</Bitrate>"
  552.  
  553.     fout.WriteLine "       <Location>"
  554.     Set Media = Song.Media
  555.     If Not IsNull( Media) And Not IsEmpty( Media) And IsObject( Media) Then
  556.       fout.WriteLine "         <Media id=""Media_"&Media.id&""" sn=""" & _
  557.         Media.SerialNumber & """>"& MapXML(Media.MediaLabel) &"</Media>"
  558.     End If
  559.  
  560.     fout.WriteLine "         <Path>"& MapXML(Song.Path) &"</Path>"
  561.     fout.WriteLine "       </Location>"
  562.  
  563.     fout.WriteLine "    </Song>"
  564.     Progress.Increase
  565.     if Progress.Terminate then
  566.       Exit For
  567.     end if
  568.   next
  569.   fout.WriteLine "  </Songs>"
  570.  
  571.   fout.WriteLine "</MusicDatabase>"
  572.  
  573.   ' Close the output file and finish
  574.   fout.Close
  575.  
  576.   ' Was it successfull?
  577.   Dim ok
  578.   if Progress.Terminate then
  579.     ok = False
  580.   else
  581.     ok = True
  582.   end if
  583.  
  584.   ' hide progress
  585.   Set Progress = Nothing
  586.  
  587.   Call FinishExport( ok)
  588. End Sub
  589.  
  590.